package com.example.utils;

import java.util.*;

/**
 * 货物上色工具：
 *   • 仅支持 1 或 2 家公司
 *   • 颜色顺序固定对应 5 个大类：GC, WXP, ZH, SPX, PT
 *   • 单家公司 ⇒ 使用蓝色调色板
 *   • 双家公司 ⇒ 公司索引 0 用蓝色，索引 1 用绿色
 *
 * 用法：
 *   int companyIdx = companyOrder.indexOf(companyCode); // 0 or 1
 *   String colorHex = CargoColorUtil.pickColor(companyIdx, cargoType);
 */
public final class CargoColorUtils {

    /* ── 两套调色板 ── */
    private static final String[] BLUE  = hexes(
            135,206,235, 0,0,255, 0,191,255, 0,0,128, 25,25,112);
    private static final String[] GREEN = hexes(
            152,255,152, 0,255,0, 50,205,50, 34,139,34, 0,100,0);

    /* 5 个大类的固定顺序 */
    private static final List<String> TYPE_ORDER =
            List.of("GC","WXP","ZH","SPX","PT");

    /** 获取颜色 */
    public static String pickColor(int companyIdx, String cargoType){
        if (companyIdx < 0 || companyIdx > 1) companyIdx = 0; // 容错

        String[] palette = (companyIdx == 0) ? BLUE : GREEN;
        int typePos = TYPE_ORDER.indexOf(
                cargoType != null ? cargoType : "");
        return typePos >= 0 ? palette[typePos] : "#CCCCCC";   // 未知大类 → 灰色
    }

    /* ---------- 私有辅助 ---------- */
    private static String[] hexes(int... rgb){
        String[] arr = new String[rgb.length/3];
        for (int i = 0, j = 0; i < rgb.length; i += 3, j++){
            arr[j] = String.format("#%02X%02X%02X",
                    rgb[i], rgb[i+1], rgb[i+2]);
        }
        return arr;
    }

    private CargoColorUtils(){} // no-instance
}
